Connecting a data sender to a data receiver has been accomplished in a variety of ways and in a variety of situations in the past. Simple connections such as a terminal to a host computer require capturing and transmitting data from the terminal to the host. As technology has progressed, multiple data streams have been transmitted across connections such as these. However, in most of these past connections no strict synchronization was needed because there was no temporal quality to the one or more data streams or no temporal relationship between the various data streams that needed to be maintained.
Modern electronics and systems require much greater synchronization of data streams transmitted across a connection due primarily to the type and nature of the connection. For example, modern video telephony involves transmitting both image and sound wherein it is extremely desirable for the image to be synchronized to the sound so that the lips appear to move in accordance with the sound being played. In fact, fast delivery and proper synchronization of these different data streams is oftentimes more important than complete delivery of each data stream. Stated differently, due to the nature of the types of data streams and their common uses, it is not atypical to be more concerned with fast delivery than whether every bit of data arrives and is utilized at the receiving end.
Further, with the advance of modern electronics and computer systems and with the continuing breakthroughs in telecommunications, the range and variety of these various data stream types continues to grow. And with the vagaries of network communications, compression/decompression processing requirements, processor dependent latencies, and differing data stream types being processed differently, synchronization of data streams is becoming more important.